package com.example.backed.service;

import com.example.backed.dto.CartItemAddDTO;
import com.example.backed.entity.CartItem;
import com.example.backed.vo.CartStatsVO;
import java.util.List;

public interface CartService {
    /**
     * 添加商品到购物车
     *
     * @param userId 用户ID
     * @param addDTO 添加购物车请求
     * @return 购物车项
     */
    CartItem addToCart(Long userId, CartItemAddDTO addDTO);

    /**
     * 更新购物车项数量
     *
     * @param userId 用户ID
     * @param id 购物车项ID
     * @param quantity 数量
     * @return 是否更新成功
     */
    boolean updateQuantity(Long userId, Long id, Integer quantity);

    /**
     * 更新购物车项选中状态
     *
     * @param userId 用户ID
     * @param id 购物车项ID
     * @param selected 选中状态
     * @return 是否更新成功
     */
    boolean updateSelected(Long userId, Long id, Integer selected);

    /**
     * 删除购物车项
     *
     * @param userId 用户ID
     * @param id 购物车项ID
     * @return 是否删除成功
     */
    boolean deleteCartItem(Long userId, Long id);

    /**
     * 获取用户的购物车列表
     *
     * @param userId 用户ID
     * @return 购物车项列表
     */
    List<CartItem> getUserCartItems(Long userId);

    /**
     * 获取用户已选中的购物车项
     *
     * @param userId 用户ID
     * @return 购物车项列表
     */
    List<CartItem> getSelectedCartItems(Long userId);

    /**
     * 清空用户购物车
     *
     * @param userId 用户ID
     * @return 是否清空成功
     */
    boolean clearCart(Long userId);

    /**
     * 删除用户已选中的购物车项
     *
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteSelectedItems(Long userId);

    /**
     * 获取购物车统计信息
     *
     * @param userId 用户ID
     * @return 购物车统计信息
     */
    CartStatsVO getCartStats(Long userId);
} 